package pers.tz.题目.leetcode.树;

import pers.tz.common.TreeNode;

/**
 * @author irony
 * @date 2024-03-17
 */
public class leetcode_0101_对称二叉树 {
    //给你一个二叉树的根节点 root ， 检查它是否轴对称。
//
//
//
// 示例 1：
//
//
//输入：root = [1,2,2,3,4,4,3]
//输出：true
//
//
// 示例 2：
//
//
//输入：root = [1,2,2,null,3,null,3]
//输出：false
//
//
//
//
// 提示：
//
//
// 树中节点数目在范围 [1, 1000] 内
// -100 <= Node.val <= 100
//
//
//
//
// 进阶：你可以运用递归和迭代两种方法解决这个问题吗？

    public static void main(String[] args) {
        TreeNode root = new TreeNode(1);
        TreeNode left = new TreeNode(2);
        TreeNode right = new TreeNode(3);
        root.left = left;
        root.right = right;

        System.out.println(isSymmetric(root));
    }

    public static boolean isSymmetric(TreeNode root) {
        return process(root.left, root.right);
    }

    // 两个节点是镜像
    private static boolean process(TreeNode head1, TreeNode head2) {
        if (head1 == null && head2 == null) {
            return true;
        }

        else if (head1 != null && head2 != null) {
            if (head1.val == head2.val) {
                return process(head1.left, head2.right)
                       &&
                       process(head1.right, head2.left);


            } else {
                return false;
            }
        }

        else {
            return false;
        }

    }
}
